home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
fdimg
/
oh!.2hd
/
OH!DEN_B.LZH
/
TOOLS
/
CDC
/
CDCSXSRC.LZH
/
LBSRC.LZH
/
DRAWWIN.HAS
< prev
next >
Wrap
Text File
|
1995-03-20
|
9KB
|
466 lines
* ウィンドウ描画とコントロール生成廃棄
* 1995.03.10
* You Utzse@電脳魔術団@Mankaiseisakujo /1993-1995
.include DOSCALL.MAC
.include SXCALL.MAC
.include SXCALL.H
.include YOU200.MAC
.include HASMACRO.MAC
.include WORK.INC
.include FLAG.INC
.include CDC.MAC
.xref ScrProc
.xref FillHdl
ttllngs = 50
*==============================================*
DrawWin::
Xpea winPtr(a5)
SX __CMDraw,4
SX __EMMSLoc,0
move.l d0,-(sp)
move.l TtlHdl(a5),-(sp)
* pea TtlHdl(a5) *疑似ハンドル
move.l Ttlargc(a5),-(sp)
pea.l Sc1work(a5)
move.w #1,-(sp)
SXSUB ScrProc,18
*****
move.l #0*$10000+158,-(sp)
SX __GMMove,4
move.w #G_FORE*$100+G_PSET,-(sp)
SX __GMPenMode,2
move.w #G_WHITE,-(sp)
SX __GMForeColor,2
move.l #WIN_X*$10000+158,-(sp)
SX __GMLine,4
move.l #0*$10000+174,-(sp)
SX __GMMove,4
move.l #WIN_X*$10000+174,-(sp)
SX __GMLine,4
move.l #0*$10000+12,-(sp)
SX __GMMove,4
move.l #WIN_X*$10000+12,-(sp)
SX __GMLine,4
*****
move.l #0*$10000+159,-(sp)
SX __GMMove,4
move.w #G_FORE*$100+G_PSET,-(sp)
SX __GMPenMode,2
move.w #G_BLACK,-(sp)
SX __GMForeColor,2
move.l #WIN_X*$10000+159,-(sp)
SX __GMLine,4
move.l #0*$10000+175,-(sp)
SX __GMMove,4
move.l #WIN_X*$10000+175,-(sp)
SX __GMLine,4
move.l #0*$10000+13,-(sp)
SX __GMMove,4
move.l #WIN_X*$10000+13,-(sp)
SX __GMLine,4
*****
move.l #4*$10000,-(sp)
SX __GMMove,4
pea.l b6_ttl(pc)
SX __GMDrawStrZ,4
move.l #4*$10000+161,-(sp)
SX __GMMove,4
pea.l b4_ttl(pc)
SX __GMDrawStrZ,4
~T
rts
prgfill: dc.w 28,161,WIN_X,161+12
.even
DrawWin2::
move.l #4*$10000+161,-(sp)
SX __GMMove,4
pea.l b4_ttl(pc)
SX __GMDrawStrZ,4
move.w #G_LGRAY,-(sp)
SX __GMForeColor,2
pea prgfill(pc)
SX __GMFillRect,4
move.w #G_BLACK,-(sp)
SX __GMForeColor,2
move.l #28*$10000+161,-(sp)
SX __GMMove,4
move.l PrgHdl(a5),-(sp)
SX __MMHdlLock,4
bsr makestr
HDL2PTR PrgHdl(a5),a1
move.w (a1),d0
lsl.w #2,d0
ifge <cmp.w #40,d0>
move.w #40,d0
endif
move.w d0,-(sp)
move.l PrgstrPtr(a5),-(sp) *offset
pea Prgstr(a5)
SX __GMDrawStr,10
move.l PrgHdl(a5),-(sp)
SX __MMHdlUnlock,4
~T
rts
*==============================================*
makestr:
movem.l d1-d3/a1-a2,-(sp)
HDL2PTR PrgHdl(a5),a1
moveq #0,d1
move.l d1,d2
move.l d1,d3
* move.l #400-1,d3
move.w (a1),d3
addq.w #1,d3
lea.l 2(a1),a1
lea.l Prgstr(a5),a2
@@:
move.b (a1),d1
movem.l d1-d3/a1-a4,-(sp)
move.l #3,-(sp) *max桁
move.l d1,-(sp) *num
pea (a2) *
SXSUB _ULUsingL,12
movem.l (sp)+,d1-d3/a1-a4
move.b #':',3(a2)
addq.l #1,a1
addq.l #4,a2
dbra d3,@b
movem.l (sp)+,d1-d3/a1-a2
~T
rts
*==============================================*
InitGraph::
SETPORT3 winPtr(a5)
move.w #%0111,-(sp)
SX __GMAPage,2
move.w #G_BLACK,-(sp)
SX __GMForeColor,2
move.w #G_LGRAY,-(sp)
SX __GMBackColor,2
rts
*==============================================*
*==============================================*
CtrlInitproc::
* move.l #200*ttllngs,-(sp)
move.l TRACKmax(a5),d0
move.l #ttllngs,d1
mulu.w d1,d0
move.l d0,-(sp)
SX __MMChHdlNew,4
move.l d0,TtlHdl(a5)
beq IC_err
* move.l #102,-(sp)
* SX __MMChHdlNew,4
* move.l d0,PrgHdl(a5)
* beq IC_err
* CDC _CDC_PROG *CDCからのPRG読み込み
* move.l d0,a0
* HDL2PTR PrgHdl(a5),a1
* move.l #25-1,d0
*@@:
* move.l (a0)+,(a1)+
* dbra d0,@b
* move.w (a0),(a1)
* CDC _CDC_PROG
* move.l d0,a0
bsr TtlHdlInit *リスト前処理(リストなくても構わないように)
*InitCtrl:
pea.l SCROLLKey(pc)
move.w #10,-(sp) *yline
move.w #ttllngs,-(sp) *chr2
move.w #ttllngs,-(sp) *chr
move.w #8,-(sp) *x1
move.w #16,-(sp) *yy
move.w #1,-(sp) *scrline
move.w #14,-(sp) *fontline
move.w #12,-(sp) *fontsize
Xpea winPtr(a5) *
move.l #0,-(sp) *pea 0.w *LOCAL座標(初期化時意味なし)
move.l TtlHdl(a5),-(sp)
* pea.l TtlHdl(a5) *STRHDL(文字列格納ハンドル)
move.l Ttlargc(a5),-(sp) *ハンドル内のASCIIZ文字列の個数
pea.l Sc1work(a5) *スクロール管理構造体のアドレス
move.w #0,-(sp) *コマンド番号
SXSUB ScrProc,42 *生成
move.l #0,-(sp) *pea.l 0.w
move.w #CI_CHRBTN*16,-(sp)
move.w #1,-(sp) *max
move.w #0,-(sp) *min(0に固定)
move.w #0,-(sp) *初期値
move.w #-1,-(sp) *可視
pea.l b1_ttl(pc)
pea.l b1_loc(pc)
Xpea winPtr(a5)
SX __CMOpen,26
move.l a0,b1Hdl(a5) *cHdl
move.l #0,-(sp) *pea.l 0.w
move.w #CI_CHRBTN*16,-(sp)
move.w #1,-(sp) *max
move.w #0,-(sp) *min(0に固定)
move.w #0,-(sp) *初期値
move.w #-1,-(sp) *可視
pea.l b2_ttl(pc)
pea.l b2_loc(pc)
Xpea winPtr(a5)
SX __CMOpen,26
move.l a0,b2Hdl(a5) *cHdl
move.l #0,-(sp) *pea.l 0.w
move.w #CI_CHRBTN*16,-(sp)
move.w #1,-(sp) *max
move.w #0,-(sp) *min(0に固定)
move.w #0,-(sp) *初期値
move.w #-1,-(sp) *可視
pea.l b3_ttl(pc)
pea.l b3_loc(pc)
Xpea winPtr(a5)
SX __CMOpen,26
move.l a0,b3Hdl(a5) *cHdl
move.l #0,-(sp) *pea.l 0.w
move.w #CI_CHRBTN*16,-(sp)
move.w #1,-(sp) *max
move.w #0,-(sp) *min(0に固定)
move.w #0,-(sp) *初期値
move.w #-1,-(sp) *可視
pea.l b5_ttl(pc)
pea.l b5_loc(pc)
Xpea winPtr(a5)
SX __CMOpen,26
move.l a0,b5Hdl(a5) *cHdl
~T
rts
IC_err:
~F
rts
SCROLLKey: *LINEUP,LINEDOWN,PAGEUP,PAGEDOWN
dc.l $003E0006,$003C0001,$00380005,$00390017
by1 = 178
by2 = by1+18
bx = 64
間 = 8
b1_ttl: LASCIIZ 'ダイレクト演奏'
b2_ttl: LASCIIZ 'PRG 曲送信'
b3_ttl: LASCIIZ 'PRG1曲消去'
b5_ttl: LASCIIZ 'PRG 全消去'
b4_ttl: dc.b 'PRG|',0
.even
b6_ttl: dc.b 'TrackNo. Title',0
.even
b1_loc: dc.w 4,by1,4+bx,by2
b3_loc: dc.w 4+bx+間,by1,4+bx*2+間,by2
b5_loc: dc.w 4+bx*2+間*2,by1,4+bx*3+間*2,by2
b2_loc: dc.w 4+bx*3+間*3,by1,4+bx*4+間*3,by2
.text
*==============================================*
TtlHdlInit::
movem.l a1-a4,-(sp)
move.l TtlHdl(a5),-(sp)
SX __MMHdlLock,4
movem.l d1-d2/a1,-(sp)
move.w #' ',-(sp)
move.l TtlHdl(a5),-(sp)
SXSUB FillHdl,6 *全てスペースで埋める
moveq #1,d1
HDL2PTR TtlHdl(a5),a1
move.l TRACKmax(a5),d2
subq.l #1,d2
for d2,<>
* void ULUsingL( char *str, int num, int max );
.xref _ULUsingL
movem.l d1-d3/a1-a4,-(sp)
move.l #3,-(sp)
move.l d1,-(sp)
pea 2(a1)
SXSUB _ULUsingL,12
movem.l (sp)+,d1-d3/a1-a4
*UsingLで返ってくるのが
move.b #' ',5(a1) *ASCIIZなので、0を取り除く
adda.l #ttllngs-1,a1
move.b #0,(a1)+
addq.l #1,d1
next
movem.l (sp)+,d1-d2/a1
CDC _CDC_TRACKS
move.l d0,a1
ifne <tst.w (a1)>
move.l 6(a1),d0
subq.l #1,d0
move.l d0,Ttlargc(a5)
ifeq <cmpi.l #1,14(a1)>
lea.l 58+40(a1),a1
HDL2PTR TtlHdl(a5),a2
move.l Ttlargc(a5),d1
for d1,<>
lea 7(a2),a3 *dst
lea (a1),a4 *src
@@:
move.b (a4)+,(a3)+
tst.b (a4)
bne @b
adda.l #ttllngs,a2
adda.l #40,a1
next
endif
else
move.l #-1,Ttlargc(a5)
endif
move.l TtlHdl(a5),-(sp)
SX __MMHdlUnlock,4
movem.l (sp)+,a1-a4
rts
*==============================================*
CtrlTiniproc::
pea.l Sc1work(a5)
move.w #3,-(sp) *廃棄
SXSUB ScrProc,6
Xpea winPtr(a5)
SX __CMKill,4
move.l TtlHdl(a5),-(sp)
SX __MMHdlDispose,4
* move.l PrgHdl(a5),-(sp)
* SX __MMHdlDispose,4
~T
rts
*==============================================*
*メインウィンドウを外部に作った場合も、winPtr
*をウィンドウレコードにする
*今回は呼ばれていません
*==============================================*
*InitWin::
move.l winRect(a5),d0
move.w paramFlg(a5),d1
btst #0,d1 *'-W'オプションが指定された?
beq _POS0 *されなかったら_POS0へ
bra _POS1 *X2がX1より小さいか同じ
_POS0:
SX __TSGetWindowPos,0
move.l d0,winRect(a5) *デフォルト位置を得る
_POS1:
add.l #WIN_X*$10000+WIN_Y,d0 *ウィンドウレクタングルを作成
move.l d0,winRect+4(a5)
_POS2:
move.l taskID(a5),-(sp) *タスクID
move.w #TRUE,-(sp) *クローズボックスあり
move.l #TRUE,-(sp) *手前に
move.w #_WDEF_NUM*16+WINOPT,-(sp)
move.w #TRUE,-(sp) *可視
pea.l WINTITLE(pc) *LASCII
pea.l winRect(a5) *ウィンドウレクタングル
.if WINTYPE='H'
Xpea winPtr(a5) *ワーク上に作成
.else
.if WINTYPE='P'
pea.l 0.w *ヒープ上に作成
.endif
.endif
SX __WMOpen,26
tst.l d0 *エラー?
bmi Win_init_ERR *ならば_INIT_Errへ
move.w #-1,winActive(a5) *アクティブフラグをセット
.if WINTYPE='P'
move.l a0,winPtr(a5) *winPtrをヒープに確保させた時
.endif
SETPORT3 winPtr(a5)
jbsr InitGraph *このウィンドウのグラフポートの初期設定
~T
rts
Win_init_ERR:
~F
rts
WINTITLE:
MAINWIN_NAME
.even